import 'reflect-metadata';
import { config } from 'dotenv';
import { buildApp } from './app';

// 加载环境变量
config();

const start = async () => {
  try {
    // 创建 Fastify 应用
    const app = await buildApp();

    // 启动服务器
    const port = Number(process.env.PORT) || 3000;
    const host = process.env.HOST || '0.0.0.0';

    await app.listen({ port, host });
    console.log(`🚀 服务器启动成功，运行在 http://${host}:${port}`);
    console.log(`📚 API 文档地址: http://${host}:${port}/docs`);
  } catch (error) {
    console.error('❌ 服务器启动失败:', error);
    process.exit(1);
  }
};

// 优雅关闭
process.on('SIGINT', async () => {
  console.log('\n🛑 正在关闭服务器...');
  try {
    // 这里可以添加数据库连接关闭逻辑
    console.log('✅ 服务器已关闭');
    process.exit(0);
  } catch (error) {
    console.error('❌ 关闭服务器时出错:', error);
    process.exit(1);
  }
});

start().catch((error) => {
  console.error('❌ 启动应用时出错:', error);
  process.exit(1);
});